﻿#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
//int main()
//{      
//	int arr1[5] = { 0,1,2,3,4 };
//	int arr2[5] = { 1,2,3,4,5 };
//	int arr3[5] = { 2,3,4,5,6 };
//	int* parr[3] = { arr1,arr2,arr3 };   //指针数组，存放指针的数组；
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			printf("%d ", parr[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}
//#include <stdio.h>
//void test1()
//{
//	int n = 10;
//	int m = 20;
//	int* p = &n;
//	*p = 20; //ok?
//	p = &m; //ok?
//}
//void test2()
//{
//	//代码2
//	int n = 10;
//	int m = 20;
//	const int* p = &n;
//	*p = 20; //ok?
//	p = &m; //ok?
//}
//void test3()
//{
//	int n = 10;
//	int m = 20;
//	int* const p = &n;
//	*p = 20; //ok?
//	p = &m; //ok?
//}
//void test4()
//{
//	int n = 10;
//	int m = 20;
//	int const* const p = &n;
//	*p = 20; //ok?
//	p = &m; //ok?
//}
//int main()
//{
//	//测试⽆const修饰的情况
//	test1(); 
//	//测试const放在*的左边情况
//	test2();
//	//测试const放在*的右边情况
//	test3();
//	//测试*的左右两边都有const
//	test4();
//	return 0;
//}
//说明const在*左边，则const修饰的是指针指向的内容，保证指针指向的内容不能被改变，但是指针变量本身可以被改变；
//const在*右边，则const修饰的是指针变量本身，指针变量本身不能被修改，但指针指向的内容可以被修改；
//int main()
//{
//	int a = 1, b = 2, c = 3;
//	int* p1 = &a; int* p2 = &b; int* p3 = &c;
//	int* parr[3] = { p1,p2,p3 };
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		printf("%d ", *parr[i]);
//	}
//	return 0;
//}
//int add(int x, int y)
//{
//	return x + y;
//}
//int main()
//{    
//	int (*pf1) (int ,int) = &add;
//	printf("%d ", (*pf1)(3, 4));
//	printf("%d ", (*pf1)(4, 5));
//	return 0;
//}
///计算器的实现
//int add(int a, int b)
//{
//	return a + b;
//}
//int sub(int a, int b)
//{
//	return a - b;
//}
//int mul(int a, int b)
//{
//	return a * b;
//}
//int div(int a, int b)
//{
//	return a / b;
//}
//void menu()
//{
//	printf("********************************\n");
//	printf("******1.add*****2.sub***********\n");
//	printf("******3.mul*****4.div***********\n");
//	printf("**********0.exit****************\n");
//	printf("********************************\n");
//}
//int main()
//{
//	int x, y;
//	int input = 0; int tem = 0;
//	int (*parr[5]) (int x, int y) = { 0,add,sub,mul,div };
//	do
//	{
//		menu();
//		printf("请选择要实现的功能\n");
//		scanf("%d", &input);
//		if (input == 0)
//		{
//			printf("退出运算器\n");
//		}
//		else
//		{
//			printf("请输入要运算的数字\n");
//			scanf("%d %d", &x, &y);
//			tem = (*parr[input])(x, y);
//			printf("%d\n", tem);
//		}
//	} while (input);
//	return 0;
//}
